문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 Go(프로그래밍 언어) (문단 편집) === 단점 === [[바이트코드]]를 생성하는 언어가 아니므로, 바이너리만 배포할 경우 C/C++ 프로그램이 그렇듯 해당 타깃 머신에 맞춰서 각각 컴파일해야 한다. 그렇게 하지 않고서 다중 플랫폼을 지원하려면 소스 코드째로 배포해야 한다. Go 언어의 설계 지향점은 시스템 프로그래밍 언어였지만, 가비지 컬렉션의 지원이나 제네릭의 부재로 인해 박싱/언박싱이 불필요하게 많이 일어나는 등 [[https://www.quora.com/Is-Go-a-systems-programming-language|C/C++을 대체할 수 있는 언어는 아니라는 것]]에 합의가 이루어지고 있는 상황이다. 실제로 고성능 연산에 사용하기에는 [[C(프로그래밍 언어)|C]]/[[C++]]에 비해 느리며, 저수준 시스템 개발에서는 가비지 컬렉션과 고루틴을 지원하기 위한 무거운 런타임 등으로 인해 사용이 불가능에 가깝다. 그런 이유로 대체로 개발 속도와 실행 속도, 병행성 사이의 적정 지점이 필요한 [[서버]] 애플리케이션 개발에 많이 사용되는 편. 또 다른 비판점 하나로는 '''현대 프로그래밍 언어 연구의 성과를 일절 무시한 언어 설계'''. 많은 종류의 프로그램 버그는 [[Rust(프로그래밍 언어)|프로그래밍 언어 차원에서 원천적으로 차단]]될 수 있으며, 프로그래밍 언어 연구자들은 쓰기 쉬우면서도 최대한 많은 버그를 컴파일 시점에 잡을 수 있는 타입 시스템[* 대표적인 예로 동적 타입 언어인 [[JavaScript]]를 컴파일 시 에러를 낼 수 있도록 바꾼 [[TypeScript]]가 있다.]을 만드는 데 많은 노력을 기울이고 있다. 하지만 이런 노력들이 무색하게 Go에서는 '''널 포인터나 안전하지 않은 타입 캐스팅의 유발''' 등 수많은 버그의 원천들에 전혀 손을 대지 않았다는 것.[* 사실 이러한 구조는 Go의 모티브가 된 C도 동일하게 가지고 있다. 하지만 C는 20세기의 언어이고 Go는 21세기에 나온 언어라는 것이 문제.] 물론 단순성을 중시하는 Go의 철학상 최첨단 연구 성과들을 즉시 도입하는 데에는 무리가 있겠지만, 3~40년 전의 연구를 기반으로 최근 업계에서 당연하게 여겨지는 원칙들조차 전혀 고려하지 않았다는 것은 [[https://github.com/ksimka/go-is-not-good|수많은 사람들에 의해 비판]]받은 바 있다. (첨언하자면 위 비판의 깃허브를 확인해보면 대부분 3년전에서 크게는 7년전 자료이므로 참고용으로만 보는게 맞아보인다. ) 이에 대해 구글은 일반화(제네릭) 프로그래밍을 지원하면 코드가 더 간결해지지만 Go는 지금도 코드가 긴 편이 아니고, 컴파일 속도와 실행속도가 느려지기 때문에 아직 지원하지 않는다고 밝혔으나, 2021년경 일반화 프로그래밍을 지원하겠다고 발표, 결국 2022년 2월에 릴리즈된 1.18부터 제네릭을 지원하고 있다. [[https://tip.golang.org/doc/go1.18|#]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기